/**
 * 聊天相关API接口 - 规范版
 */

import { http } from "@/utils/core/http"
import { secureStorage } from "@/utils/core/storage"

/**
 * 获取用户的会话列表
 * @param {number} userId - 用户ID
 * @returns {Promise} 返回会话列表
 */
export function getUserSessions(userId) {
  return http.get(`/ai/sessions/${userId}`);
}

/**
 * 获取指定会话的消息列表
 * @param {string} sessionId - 会话ID
 * @returns {Promise} 返回消息列表
 */
export function getChatMessages(sessionId) {
  return http.get(`/ai/sessions/${sessionId}/messages`);
}

/**
 * 发送消息 - 流式响应（需要使用fetch支持流式读取）
 * @param {Object} data - 消息数据
 * @param {string} data.content - 消息内容
 * @param {number} data.userId - 用户ID
 * @param {string} data.sessionId - 会话ID（可选）
 * @param {string} data.title - 会话标题（可选）
 * @returns {Promise<Response>} 返回Response对象以支持流式读取
 */
export function sendMessage(data) {
  const baseURL = import.meta.env.VITE_API_BASE_URL || "/api";
  
  // 准备请求头
  const headers = {
    'Content-Type': 'application/json',
  };
  
  // 从 secureStorage 获取token（与登录流程一致）
  const token = secureStorage.getItem('token');
  if (token) {
    headers.Authorization = `Bearer ${token}`;
  }
  
  return fetch(`${baseURL}/ai/chat`, {
    method: 'POST',
    headers,
    body: JSON.stringify(data)
  });
}

/**
 * 删除会话
 * @param {string} sessionId - 会话ID
 * @param {number} userId - 用户ID
 * @returns {Promise} 返回删除结果
 */
export function deleteSession(sessionId, userId) {
  return http.delete(`/ai/sessions/${sessionId}`, {
    params: { userId }
  });
}

/**
 * 创建新会话（可选，发送消息时会自动创建）
 * @param {Object} data - 会话数据
 * @param {number} data.userId - 用户ID
 * @param {string} data.title - 会话标题
 * @returns {Promise} 返回新会话信息
 */
export function createSession(data) {
  return http.post('/ai/sessions', data);
}
